/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
const merge = function (
  nums1: Array<number>,
  m: number,
  nums2: Array<number>,
  n: number
) {
  // 初始化只恨
  let i = m - 1,
    j = n - 1,
    k = m + n - 1;
  // 开始遍历
  while (i >= 0 && j >= 0) {
    if (nums1[i] >= nums2[j]) {
      nums1[k] = nums1[i];
      i--;
      k--;
    } else {
      nums1[k] = nums2[j];
      j--;
      k--;
    }
  }
  // 处理nums1先遍历完剩下nums2的情况,这时候直接向nums1前面塞数据
  while (j >= 0) {
    nums1[k] = nums2[j];
    j--;
    k--;
  }
};
const nums1 = [1, 2, 3, 0, 0, 0];
const nums2 = [2, 5, 6];
merge(nums1, 3, nums2, 3);
console.log(nums1);
console.log(nums2);
